// #include <iostream>
// #include <cstdio>
// #include <cstdlib>
// #include <cerrno>
// #include <cstring>
// #include <cassert>

// using namespace std;

// int main()
// {
//     //打开文件，写入内容
//     FILE* fp = fopen("bite", "w");
//     if(fp == NULL)
//     {
//         cerr << "fopen fail! errno: " << errno << strerror(errno) << endl;
//         exit(-1);
//     }

//     //写入内容
//     char buffer[64] = { "Linux so easy!" };
//     fwrite(buffer, sizeof(char), strlen(buffer), fp);

//     //关闭文件
//     fclose(fp);

//     //重新打开文件
//     fp = fopen("bite", "r");
//     if(fp == NULL)
//     {
//         cerr << "fopen fail! errno: " << errno << strerror(errno) << endl;
//         exit(-1);
//     }

//     //直接读取
//     int n = fread(buffer, sizeof(char), sizeof(buffer), fp);
//     buffer[n] = '\0';
//     cout << buffer << endl;

//     //改变文件指针的位置，再读取
//     int ret = fseek(fp, 5, SEEK_SET);
//     assert(ret != -1);

//     //读取内容并输出至屏幕
//     n = fread(buffer, sizeof(char), sizeof(buffer), fp);
//     buffer[n] = '\0';
//     cout << buffer << endl;

//     //关闭文件流
//     fclose(fp);
//     fp = NULL;

//     return 0;
// }

#include <iostream>
#include <cstdio>
#include <cerrno>
#include <cstring>
#include <cstdlib>
#include <cassert>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

using namespace std;

int main()
{
    //打开文件，写入内容
    int fd = open("bite", O_WRONLY | O_CREAT | O_TRUNC, 0666);
    if(fd == -1)
    {
        cerr << "open fail! errno: " << errno << strerror(errno) << endl;
        exit(-1);
    }

    //写入内容
    char buffer[64] = { "Linux so easy!" };
    write(fd, buffer, strlen(buffer));

    //关闭文件
    close(fd);

    //重新打开文件
    fd = open("bite", O_RDONLY);
    if(fd == -1)
    {
        cerr << "open fail! errno: " << errno << strerror(errno) << endl;
        exit(-1);
    }

    //直接读取
    int n = read(fd, buffer, sizeof(buffer) - 1);
    buffer[n] = '\0';
    cout << buffer << endl;

    //改变文件指针的位置，再读取
    int ret = lseek(fd, 5, SEEK_SET);
    assert(ret != -1);

    //读取内容并输出至屏幕
    n = read(fd, buffer, sizeof(buffer) - 1);
    buffer[n] = '\0';
    cout << buffer << endl;

    //关闭文件流
    close(fd);
    return 0;
}